Computer programs are typically written to optimize performance as judged by certain specific desired characteristics, such as usability and maintainability characteristics. However, computer programs will have a number of other performance characteristics that may be traded off. or that have not been considered, traditionally in evaluating performance.
For example, the environmental impact or performance of a computer program is increasingly of concern as the number of computers and software-controlled processes increases. The environmental impact of a computer program may include the amount of electrical power, rack space, and cooling capacity required to execute the program. Specifically, the resources consumed in hardware construction and the generation of power required for executing a computer program result in negative environmental impacts such as greenhouse gas emission, consumption of natural resources, toxic chemical byproducts, and other pollutants.
In many cases, modifying existing software programs to optimize their environmental performance is an attractive alternative to abandoning or replacing the existing software. Abandoning an existing software program totally eliminates the function that the software program performed. Particularly in cases where the software performs a necessary function, abandonment may not be a viable option. Replacing existing software with improved software is feasible only where a viable and more environmentally friendly software program exists. Even where such a viable and more environmentally friendly software program exists, there may be other barriers to its use such as cost, reduced or altered functionality, and the disruption of installing the replacement program.